package com.sxt.springcloud.bus.fallback;

import com.sxt.bus.vo.GoodsVo;
import com.sxt.springcloud.bus.GoodsClientService;
import com.sxt.sys.common.DataGridView;
import com.sxt.sys.common.ResultObj;
import feign.hystrix.FallbackFactory;
import org.springframework.stereotype.Component;

@Component
public class GoodsClientFallbackService implements FallbackFactory {
    @Override
    public Object create(Throwable throwable) {
        return new GoodsClientService(){

            /**
             * 查询
             *
             * @param goodsVo
             */
            @Override
            public DataGridView loadAllGoods(GoodsVo goodsVo) {
                return new DataGridView("服务降级，服务器忙，请稍后重试！调用查询所有商品方法失败");
            }

            /**
             * 添加
             *
             * @param goodsVo
             */
            @Override
            public ResultObj addGoods(GoodsVo goodsVo) {
                return ResultObj.SERVER_BUSY;
            }

            /**
             * 修改
             *
             * @param goodsVo
             */
            @Override
            public ResultObj updateGoods(GoodsVo goodsVo) {
                return ResultObj.SERVER_BUSY;
            }

            /**
             * 删除
             *
             * @param id
             * @param goodsimg
             */
            @Override
            public ResultObj deleteGoods(Integer id, String goodsimg) {
                return ResultObj.SERVER_BUSY;
            }

            /**
             * 加载所有可用的供应商
             */
            @Override
            public DataGridView loadAllGoodsForSelect() {
                return new DataGridView("服务降级，服务器忙，请稍后重试！调用加载所有可用的供应商方法失败");
            }

            /**
             * 根据供应商ID查询商品信息
             *
             * @param providerid
             */
            @Override
            public DataGridView loadGoodsByProviderId(Integer providerid) {
                return new DataGridView("服务降级，服务器忙，请稍后重试！调用根据供应商ID查询商品信息方法失败");
            }

            /**
             * 根据供应商ID查询商品信息
             */
            @Override
            public DataGridView loadGoodsById() {
                return new DataGridView("服务降级，服务器忙，请稍后重试！调用据供应商ID查询商品信息方法失败");
            }

            /**
             * 根据商品id查询商品信息
             *
             * @param id
             */
            @Override
            public DataGridView getGoodsByGid(Integer id) {
                return new DataGridView("服务降级，服务器忙，请稍后重试！调用根据商品id查询商品信息方法失败");
            }
        };
    }
}
